﻿//7. 分数求和
//7.1 题⽬描述:
//计算 1 / 1 - 1 / 2 + 1 / 3 - 1 / 4 + 1 / 5 - … + 1 / 99 - 1 / 100 的值，并打印出结果，（注：除法分为整数除法和
//浮点数除法，要计算出⼩数，得采⽤浮点数除法，浮点数除法的操作数中⾄少要保证有⼀个浮点
//数。）

      /*     1.对于赋值+=或者-=运用不熟练
             2.if语句隔离奇偶
             3.浮点数打印 %f*/
//#include <stdio.h>
//
//int main()
//{
//	int i = 0;
//	double  sum = 0;//注意初始值
//	for (i = 1;i <= 100;i++)
//	{
//		if (i % 2 == 0)
//		{
//			sum = sum - 1.0 / i;
//		}
//		if (i % 2 == 1)
//		{
//			sum += 1.0 / i;
//		}
//	
//	}
//	printf("%f", sum);
//	return 0;
//}
//                                    float 和 double 的区别
//存储精度：double 类型通常提供更高的精度，可以存储更多的有效数字。float 类型的精度较低，可能会导致在进行大量浮点运算时出现舍入误差。
//内存占用：double 类型通常占用8个字节，而 float 类型占用4个字节。因此，使用 float 可以节省内存，但在需要高精度计算时可能不够用。
//使用场景：如果计算结果需要高精度，或者涉及科学计算、金融计算等对精度要求较高的场景，建议使用 double。
// 如果内存使用是一个关键问题，并且可以接受较低的精度，可以考虑使用 float。
 




//                                现在我想展示出运算过程
#include <stdio.h>

int main()
{
	int i = 0;
	double  sum = 0;//注意初始值
	for (i = 1;i <= 100;i++)
	{
		if (i % 2 == 0)
		{
			sum = sum - 1.0 / i;
            printf("1/%d - 1/%d = %f\n", i, i - 1, sum);
		}
		if (i % 2 == 1)
		{
			sum += 1.0 / i;
            printf("1/%d + 1/%d = %f\n", i, i - 1, sum);
		}
		//    1.0/i-1 +|- 1.0/i = sum
	}
	printf("%f", sum);
	return 0;
}
//这是啥啊
//#include <stdio.h>
//
//int main() {
//    int i = 0;
//    double sum = 0; // sum保持为double类型以确保精度
//
//    for (i = 1; i <= 100; i++) {
//        if (i % 2 == 0) {
//            printf("Step %d: Subtracting  1/%d from sum\n", i, i);
//            sum = sum - 1.0 / i;
//        }
//        else {
//            printf("Step %d: Adding      1/%d to sum\n", i, i);
//            sum += 1.0 / i;
//        }
//        printf("Current sum: %f\n\n", sum); //打印当前的和
//    }
//
//    printf("Final result: %f\n", sum); //打印最终结果
//    return 0;
//}
